home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_c / cug189 / darken.c < prev    next >
Text File  |  1985-08-21  |  2KB  |  91 lines

  1. /* darken.c:  overstrike text lines for darker output -
  2.  *
  3.  *
  4.  *   (c) Chuck Allison, 1985
  5.  *
  6.  */
  7.  
  8. #include <stdio.h>
  9. #include <ctype.h>
  10.  
  11. #define MAXLINE 256
  12.  
  13. int strikes = 3;              /* ..default over-print count.. */
  14.  
  15. main(argc,argv)
  16. int argc;
  17. char *argv[];
  18. {
  19.     register i;
  20.  
  21.     /* ..process switches.. */
  22.     if (argv[1][0] == '-' || argv[1][0] == '/')
  23.     {
  24.         strikes = atoi(argv[1]+1);
  25.         ++argv;
  26.         --argc;
  27.     }
  28.  
  29.     /* ..process files.. */
  30.     if (argc == 1)
  31.         dk();
  32.     else
  33.     {
  34.         /* ..print each file.. */
  35.         for (i = 1; i < argc; ++i)
  36.             if (freopen(argv[i],"r",stdin) != NULL)
  37.                 dk();
  38.             else
  39.                 fprintf(stderr,"---> ERROR: can't open %s\n",argv[i]);
  40.     }
  41. }
  42.  
  43. dk()
  44. {
  45.     register i;
  46.     char *line, *index();
  47.  
  48.     line = (char *) malloc(MAXLINE);
  49.  
  50.     while (fgets(line,MAXLINE-1,stdin) != NULL)
  51.  
  52.         /* ..check for form-feed in line.. */
  53.         if (index(line,'\f') != NULL)
  54.  
  55.             /* ..output character-at-a-time.. */
  56.             for (; *line; ++line)
  57.                 if (iscntrl(*line) || isspace(*line))
  58.                     /* ..don't repeat special characters.. */
  59.                     putchar(*line);
  60.                 else
  61.                 {
  62.                     for (i = 1; i < strikes; ++i)
  63.                     {
  64.                         putchar(*line);
  65.                         putchar('\b');
  66.                     }
  67.                     putchar(*line);
  68.                 }
  69.  
  70.         else if (strlen(line) == 0)
  71.             /* ..output blank line.. */
  72.             putchar('\n');
  73.  
  74.         else
  75.         {
  76.             /* ..output line-at-a-time.. */
  77.             line[strlen(line)-1] = '\0';    /* zap \n */
  78.  
  79.             for (i = 0; i < strikes; ++i)
  80.                 printf("%s\r",line);
  81.  
  82.             putchar('\n');
  83.         }
  84.  
  85.     free(line);
  86. }
  87. ine);
  88.                         putchar('\b');
  89.                     }
  90.                     putchar(*line);
  91.